home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / gucrtr13.lha / GUICreator1.3 / GUIC.lha / GUICreator / Demos / Videothek / Videothek.c < prev    next >
C/C++ Source or Header  |  1995-08-22  |  38KB  |  837 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "Videothek_Includes.h"
  8. #include "Videothek.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Variables and Structures                                            */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. extern struct IntuitionBase   *IntuitionBase;
  17. extern struct GfxBase         *GfxBase;
  18.  
  19. extern struct Library *GadToolsBase ;
  20. extern struct Library *AslBase      ;
  21. extern struct Library *DataTypesBase;
  22.  
  23. /*************************************************************************/
  24. /*                                                                       */
  25. /*   Defines                                                             */
  26. /*                                                                       */
  27. /*************************************************************************/
  28.  
  29. #define RASTERX (GfxBase->DefaultFont->tf_XSize)
  30. #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
  31.  
  32. #define XSIZE(x)  ((x)*RASTERX)
  33. #define YSIZE(x)  ((x)*RASTERY)
  34.  
  35. #define XPOS(x)   (XSIZE(x)+customscreen->WBorLeft)
  36. #define YPOS(x)   (YSIZE(x)+customscreen->BarHeight+1)
  37.  
  38. #define ERROR_NO_WINDOW_OPENED      1001L
  39. #define ERROR_NO_PUBSCREEN_LOCKED   1002L
  40. #define ERROR_NO_GADGETS_CREATED    1003L
  41. #define ERROR_NO_VISUALINFO         1004L
  42. #define ERROR_NO_PICTURE_LOADED     1005L
  43. #define ERROR_NO_GADGETLIST_CREATED 1006L
  44. #define ERROR_NO_WINDOW_MENU        1007L
  45. #define ERROR_SCREEN_TOO_SMALL      1008L
  46. #define ERROR_LIST_NOT_INITIALIZED  1009L
  47. /// struct HauptfensterData
  48. struct HauptfensterData
  49.     {
  50.     BOOL    gd_Disabled_Listview;
  51.     struct List *gd_Labels_Listview;
  52.     UWORD   gd_Selected_Listview;
  53.     UWORD   gd_Top_Listview;
  54.     BOOL    gd_Disabled_Neu;
  55.     BOOL    gd_Disabled_Aendern;
  56.     BOOL    gd_Disabled_Loeschen;
  57.     BOOL    gd_Disabled_ListeLoeschen;
  58.     BOOL    gd_Disabled_Drucken;
  59.     BOOL    gd_Disabled_Speichern;
  60.     };
  61.  
  62. ///
  63. /// struct EintragData
  64. struct EintragData
  65.     {
  66.     BOOL    gd_Disabled_Filmtitel;
  67.     char    gd_String_Filmtitel[40];
  68.     BOOL    gd_Disabled_Kassette;
  69.     ULONG   gd_Number_Kassette;
  70.     BOOL    gd_Disabled_Minuten;
  71.     ULONG   gd_Number_Minuten;
  72.     BOOL    gd_Disabled_Quelle;
  73.     UWORD   gd_Active_Quelle;
  74.     char * *gd_Labels_Quelle;
  75.     BOOL    gd_Disabled_Art;
  76.     UWORD   gd_Active_Art;
  77.     char * *gd_Labels_Art;
  78.     BOOL    gd_Disabled_Weiter;
  79.     };
  80.  
  81. ///
  82.  
  83. /*************************************************************************/
  84. /*                                                                       */
  85. /*   Routines to handle gadgets                                          */
  86. /*                                                                       */
  87. /*************************************************************************/
  88.  
  89. /// HandleGadgetsHauptfenster()
  90.  
  91. void HandleGadgetsHauptfenster(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct HauptfensterData *gadgetdata,APTR userdata)
  92. {
  93.     switch(gadgetid)
  94.         {
  95.         case LVID_Listview:
  96.             ListviewClicked(win,wingads,gadgetid,messagecode,userdata);
  97.             break;
  98.         case BTID_Neu:
  99.             NeuClicked(win,wingads,gadgetid,messagecode,userdata);
  100.             break;
  101.         case BTID_Aendern:
  102.             AendernClicked(win,wingads,gadgetid,messagecode,userdata);
  103.             break;
  104.         case BTID_Loeschen:
  105.             LoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
  106.             break;
  107.         case BTID_ListeLoeschen:
  108.             ListeLoeschenClicked(win,wingads,gadgetid,messagecode,userdata);
  109.             break;
  110.         case BTID_Drucken:
  111.             DruckenClicked(win,wingads,gadgetid,messagecode,userdata);
  112.             break;
  113.         case BTID_Speichern:
  114.             SpeichernClicked(win,wingads,gadgetid,messagecode,userdata);
  115.             break;
  116.         };
  117. }
  118. ///
  119. /// HandleGadgetsEintrag()
  120.  
  121. void HandleGadgetsEintrag(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct EintragData *gadgetdata,APTR userdata)
  122. {
  123.     switch(gadgetid)
  124.         {
  125.         case STID_Filmtitel:
  126.             FilmtitelClicked(win,wingads,gadgetid,messagecode,userdata);
  127.             break;
  128.         case INID_Kassette:
  129.             KassetteClicked(win,wingads,gadgetid,messagecode,userdata);
  130.             break;
  131.         case INID_Minuten:
  132.             MinutenClicked(win,wingads,gadgetid,messagecode,userdata);
  133.             break;
  134.         case CYID_Quelle:
  135.             QuelleClicked(win,wingads,gadgetid,messagecode,userdata);
  136.             break;
  137.         case CYID_Art:
  138.             ArtClicked(win,wingads,gadgetid,messagecode,userdata);
  139.             break;
  140.         case BTID_Weiter:
  141.             WeiterClicked(win,wingads,gadgetid,messagecode,userdata);
  142.             break;
  143.         };
  144. }
  145. ///
  146.  
  147.  
  148. /*************************************************************************/
  149. /*                                                                       */
  150. /*   Routines to create gadgets                                          */
  151. /*                                                                       */
  152. /*************************************************************************/
  153.  
  154. /// CreateGadgetsHauptfenster()
  155. struct Gadget *CreateGadgetsHauptfenster(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct HauptfensterData *gadgetdata)
  156. {
  157.     struct Gadget *gadget=CreateContext(gadgetlist);
  158.     if (gadget)
  159.         {
  160.         wingads[LVID_Listview]=gadget=CreateGadget(LISTVIEW_KIND,gadget,&newgad[LVID_Listview],GA_Disabled,gadgetdata->gd_Disabled_Listview,GTLV_Labels,gadgetdata->gd_Labels_Listview,GTLV_ReadOnly,FALSE,GTLV_Selected,gadgetdata->gd_Selected_Listview,GTLV_ShowSelected,NULL,GTLV_Top,gadgetdata->gd_Top_Listview,LAYOUTA_Spacing,0,TAG_END);
  161.         wingads[LAID_Gadget2]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget2],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  162.         wingads[BTID_Neu]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Neu],GA_Disabled,gadgetdata->gd_Disabled_Neu,GT_Underscore,'_',TAG_END);
  163.         wingads[BTID_Aendern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Aendern],GA_Disabled,gadgetdata->gd_Disabled_Aendern,GT_Underscore,'_',TAG_END);
  164.         wingads[BTID_Loeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Loeschen],GA_Disabled,gadgetdata->gd_Disabled_Loeschen,GT_Underscore,'_',TAG_END);
  165.         wingads[BTID_ListeLoeschen]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_ListeLoeschen],GA_Disabled,gadgetdata->gd_Disabled_ListeLoeschen,GT_Underscore,'_',TAG_END);
  166.         wingads[BTID_Drucken]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Drucken],GA_Disabled,gadgetdata->gd_Disabled_Drucken,GT_Underscore,'_',TAG_END);
  167.         wingads[BTID_Speichern]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Speichern],GA_Disabled,gadgetdata->gd_Disabled_Speichern,GT_Underscore,'_',TAG_END);
  168.         return gadget;
  169.         }
  170.     else return NULL;
  171. }
  172. ///
  173. /// CreateGadgetsEintrag()
  174. struct Gadget *CreateGadgetsEintrag(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct EintragData *gadgetdata)
  175. {
  176.     struct Gadget *gadget=CreateContext(gadgetlist);
  177.     if (gadget)
  178.         {
  179.         wingads[LAID_Gadget9]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget9],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  180.         wingads[LAID_Gadget10]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget10],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  181.         wingads[LAID_Gadget11]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget11],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  182.         wingads[STID_Filmtitel]=gadget=CreateGadget(STRING_KIND,gadget,&newgad[STID_Filmtitel],GA_Disabled,gadgetdata->gd_Disabled_Filmtitel,GA_TabCycle,TRUE,GTST_MaxChars,40,GTST_String,gadgetdata->gd_String_Filmtitel,GA_TabCycle,TRUE,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGLEFT,STRINGA_ReplaceMode,FALSE,TAG_END);
  183.         wingads[INID_Kassette]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Kassette],GA_Disabled,gadgetdata->gd_Disabled_Kassette,GA_TabCycle,TRUE,GTIN_MaxChars,4,GTIN_Number,gadgetdata->gd_Number_Kassette,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
  184.         wingads[INID_Minuten]=gadget=CreateGadget(INTEGER_KIND,gadget,&newgad[INID_Minuten],GA_Disabled,gadgetdata->gd_Disabled_Minuten,GA_TabCycle,TRUE,GTIN_MaxChars,3,GTIN_Number,gadgetdata->gd_Number_Minuten,STRINGA_ExitHelp,TRUE,STRINGA_Justification,GACT_STRINGCENTER,STRINGA_ReplaceMode,TRUE,TAG_END);
  185.         wingads[CYID_Quelle]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Quelle],GA_Disabled,gadgetdata->gd_Disabled_Quelle,GTCY_Labels,gadgetdata->gd_Labels_Quelle,GTCY_Active,gadgetdata->gd_Active_Quelle,TAG_END);
  186.         wingads[CYID_Art]=gadget=CreateGadget(CYCLE_KIND,gadget,&newgad[CYID_Art],GA_Disabled,gadgetdata->gd_Disabled_Art,GTCY_Labels,gadgetdata->gd_Labels_Art,GTCY_Active,gadgetdata->gd_Active_Art,TAG_END);
  187.         wingads[LAID_Gadget17]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget17],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  188.         wingads[LAID_Gadget18]=gadget=CreateGadget(TEXT_KIND,gadget,&newgad[LAID_Gadget18],GT_Underscore,'_',GTTX_Border,FALSE,TAG_END);
  189.         wingads[BTID_Weiter]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Weiter],GA_Disabled,gadgetdata->gd_Disabled_Weiter,GT_Underscore,'_',TAG_END);
  190.         return gadget;
  191.         }
  192.     else return NULL;
  193. }
  194. ///
  195.  
  196.  
  197. /*************************************************************************/
  198. /*                                                                       */
  199. /*   Routines to handle windows                                          */
  200. /*                                                                       */
  201. /*************************************************************************/
  202.  
  203.  
  204. /// HandleHauptfenster()
  205. void HandleHauptfenster(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  206. {
  207.     APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  208.     if (visualinfo)
  209.         {
  210.         struct Gadget  *gadgetlist = NULL;
  211.         struct Menu    *menustrip  = NULL;
  212.         ULONG height=34,width=66,maxheight=1024,maxwidth=1280;
  213.  
  214.         struct Gadget *wingads[8];
  215.  
  216.         char * title                  = "Videothek - © 1993-95 by Markus Hillenbrand";
  217.         struct Window     *win        = NULL;
  218.  
  219.         struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  220.  
  221.         struct NewGadget  newgad[]    = {
  222.                                                      XPOS(1),YPOS(2),XSIZE(64),YSIZE(25),NULL,&textattr,LVID_Listview,PLACETEXT_ABOVE,visualinfo,NULL,
  223.                                                      XPOS(1),YPOS(0),XSIZE(64),YSIZE(2),"_Filme:",&textattr,LAID_Gadget2,PLACETEXT_IN,visualinfo,NULL,
  224.                                                      XPOS(1),YPOS(27),XSIZE(16),YSIZE(2),"_Neu",&textattr,BTID_Neu,PLACETEXT_IN,visualinfo,NULL,
  225.                                                      XPOS(17),YPOS(27),XSIZE(16),YSIZE(2),"Änd_ern",&textattr,BTID_Aendern,PLACETEXT_IN,visualinfo,NULL,
  226.                                                      XPOS(33),YPOS(27),XSIZE(16),YSIZE(2),"_Löschen",&textattr,BTID_Loeschen,PLACETEXT_IN,visualinfo,NULL,
  227.                                                      XPOS(49),YPOS(27),XSIZE(16),YSIZE(2),"L_iste löschen",&textattr,BTID_ListeLoeschen,PLACETEXT_IN,visualinfo,NULL,
  228.                                                      XPOS(1),YPOS(31),XSIZE(25),YSIZE(2),"_Drucken auf Drucker",&textattr,BTID_Drucken,PLACETEXT_IN,visualinfo,NULL,
  229.                                                      XPOS(40),YPOS(31),XSIZE(25),YSIZE(2),"_Speichern & Ende",&textattr,BTID_Speichern,PLACETEXT_IN,visualinfo,NULL,
  230.                                                   };
  231.  
  232.  
  233.         struct HauptfensterData gadgetdata = {
  234.                                                      /* belongs to a listview gadget */
  235.                                                      FALSE,
  236.                                                      (struct List *)~0,
  237.                                                      0,
  238.                                                      0,
  239.                                                      /* belongs to a button */
  240.                                                      FALSE,
  241.                                                      /* belongs to a button */
  242.                                                      FALSE,
  243.                                                      /* belongs to a button */
  244.                                                      FALSE,
  245.                                                      /* belongs to a button */
  246.                                                      FALSE,
  247.                                                      /* belongs to a button */
  248.                                                      FALSE,
  249.                                                      /* belongs to a button */
  250.                                                      FALSE,
  251.                                                   };
  252.  
  253.  
  254.         struct NewMenu    menu[]      = {
  255.                                                      NM_TITLE, "Program",0,0,0,0,
  256.                                                      NM_ITEM ,"About","A",0,0,0,
  257.                                                     };
  258.         height= YSIZE(height);
  259.         width = XSIZE(width) ;
  260.         if (left == -1) left  = (customscreen->Width-width)/2;
  261.         if (top  == -1) top   = (customscreen->Height-height)/2;
  262.  
  263.         if (CreateGadgetsHauptfenster(&gadgetlist,newgad,wingads,&gadgetdata) != NULL)
  264.             {
  265.             if (height>customscreen->Height || width>customscreen->Width) GUIC_ErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  266.             win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  267.                                             WA_CloseGadget,      TRUE,
  268.                                             WA_DepthGadget,      TRUE,
  269.                                             WA_SizeGadget,       TRUE,
  270.                                             WA_DragBar,          TRUE,
  271.                                             WA_Gadgets,          gadgetlist,
  272.                                             WA_InnerHeight,      height,
  273.                                             WA_InnerWidth,       width,
  274.                                             WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_MENUPICK|BUTTONIDCMP|LISTVIEWIDCMP,
  275.                                             WA_Left,             left,
  276.                                             WA_Top,              top,
  277.                                             WA_MaxHeight,        maxheight,
  278.                                             WA_MinHeight,        height,
  279.                                             WA_MaxWidth,         maxwidth,
  280.                                             WA_MinWidth,         width,
  281.                                             WA_SizeBRight,       FALSE,
  282.                                             WA_SizeBBottom,      TRUE,
  283.                                             WA_SmartRefresh,     TRUE,
  284.                                             WA_CustomScreen,     customscreen,
  285.                                             WA_Title,            title,
  286.                                             WA_NewLookMenus,     TRUE,
  287.                                             TAG_END);
  288.             if (win)
  289.                 {
  290.                 menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  291.                 if (menustrip)
  292.                     {
  293.                     if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  294.                         {
  295.                         if (SetMenuStrip(win,menustrip))
  296.                             {
  297.                             struct IntuiMessage  *imessage   = NULL;
  298.                             struct Gadget        *idcmpgad   = NULL;
  299.                             struct NewGadget     ngcopy[]    = newgad;
  300.                             long   double        xscale      = 1.0;
  301.                             long   double        yscale      = 1.0;
  302.                             ULONG                i           = 0;
  303.                             ULONG                gadgetcount = 8;
  304.                             ULONG  idcmpclass                = 0;
  305.                             UWORD  messagecode               = 0;
  306.                             BOOL   running                   = TRUE;
  307.                             ULONG  signal                    = 0;
  308.                             ULONG  longpointer1              = 0;
  309.                             ULONG  longpointer2              = 0;
  310.  
  311.                             SetFont(win->RPort,GfxBase->DefaultFont);
  312.  
  313.                             GT_RefreshWindow(win,NULL);
  314.  
  315.                             /* User-Setup */
  316.                             UserSetupHauptfenster(win,wingads,userdata);
  317.                             do
  318.                                 {
  319.                                 WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  320.                                 if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  321.                                 if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  322.                                 WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  323.                                 while (running && (imessage=GT_GetIMsg(win->UserPort)))
  324.                                     {
  325.                                     idcmpgad=(struct Gadget *)imessage->IAddress;
  326.                                     idcmpclass=imessage->Class;
  327.                                     messagecode =imessage->Code;
  328.  
  329.                                     GT_ReplyIMsg(imessage);
  330.  
  331.                                     switch(idcmpclass)
  332.                                         {
  333.                                         case IDCMP_REFRESHWINDOW:
  334.                                             GT_BeginRefresh(win);
  335.                                             GT_EndRefresh(win,TRUE);
  336.                                             break;
  337.                                         case IDCMP_MENUPICK:
  338.                                             switch(MENUNUM(messagecode))
  339.                                                 {
  340.                                                 case 0:
  341.                                                     switch (ITEMNUM(messagecode))
  342.                                                         {
  343.                                                         case 0:
  344.                                                             About(win,wingads,userdata);
  345.                                                             break;
  346.                                                         }
  347.                                                     break;
  348.                                                 }
  349.                                             break;
  350.                                         case IDCMP_NEWSIZE:
  351.                                             GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,GTLV_Labels,&longpointer2,TAG_END);
  352.                                             gadgetdata.gd_Disabled_Listview=(longpointer1 == 0)?FALSE:TRUE;
  353.                                             gadgetdata.gd_Labels_Listview=(struct List *)longpointer2;
  354.                                             GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Top,&longpointer1,GTLV_Selected,&longpointer2,TAG_END);
  355.                                             gadgetdata.gd_Top_Listview=longpointer1;
  356.                                             gadgetdata.gd_Selected_Listview=longpointer2;
  357.                                             GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  358.                                             gadgetdata.gd_Disabled_Neu=(longpointer1 == 0)?FALSE:TRUE;
  359.                                             GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  360.                                             gadgetdata.gd_Disabled_Aendern=(longpointer1 == 0)?FALSE:TRUE;
  361.                                             GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  362.                                             gadgetdata.gd_Disabled_Loeschen=(longpointer1 == 0)?FALSE:TRUE;
  363.                                             GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  364.                                             gadgetdata.gd_Disabled_ListeLoeschen=(longpointer1 == 0)?FALSE:TRUE;
  365.                                             GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  366.                                             gadgetdata.gd_Disabled_Drucken=(longpointer1 == 0)?FALSE:TRUE;
  367.                                             GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  368.                                             gadgetdata.gd_Disabled_Speichern=(longpointer1 == 0)?FALSE:TRUE;
  369.  
  370.                                             RemoveGList(win,gadgetlist,-1);
  371.                                             SetAPen(win->RPort,0L);
  372.                                             RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  373.                                             RefreshWindowFrame(win);
  374.  
  375.                                             xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  376.                                             yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  377.                                             for (i=0;i<gadgetcount;i++)
  378.                                                 {
  379.                                                 ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  380.                                                 ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  381.                                                 ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  382.                                                 ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  383.                                                 }
  384.  
  385.                                             FreeGadgets(gadgetlist);
  386.                                             gadgetlist=NULL;
  387.  
  388.                                             CreateGadgetsHauptfenster(&gadgetlist,ngcopy,wingads,&gadgetdata);
  389.                                             AddGList(win,gadgetlist,-1,-1,NULL);
  390.                                             RefreshGList(gadgetlist,win,NULL,-1);
  391.                                             GT_RefreshWindow(win,NULL);
  392.  
  393.                                             break;
  394.                                         case IDCMP_VANILLAKEY:
  395.                                             switch(messagecode)
  396.                                                 {
  397.                                                 case 'f':
  398.                                                     GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  399.                                                     if (longpointer1 == 0)
  400.                                                         {
  401.                                                         GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  402.                                                         GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1+1,TAG_END);
  403.                                                         GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer2,TAG_END);
  404.                                                         if (longpointer2 != longpointer1)
  405.                                                             {
  406.                                                             HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer2,&gadgetdata,userdata);
  407.                                                             }
  408.                                                         }
  409.                                                     break;
  410.                                                 case 'F':
  411.                                                     GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  412.                                                     if (longpointer1 == 0)
  413.                                                         {
  414.                                                         GT_GetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,&longpointer1,TAG_END);
  415.                                                         if (longpointer1 != 0)
  416.                                                             {
  417.                                                             GT_SetGadgetAttrs(wingads[LVID_Listview],win,NULL,GTLV_Selected,longpointer1-1,TAG_END);
  418.                                                             HandleGadgetsHauptfenster(win,wingads,LVID_Listview,longpointer1-1,&gadgetdata,userdata);
  419.                                                             }
  420.                                                         }
  421.                                                     break;
  422.                                                 case 'n':
  423.                                                     GT_GetGadgetAttrs(wingads[BTID_Neu],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  424.                                                     if (longpointer1 == 0)
  425.                                                         {
  426.                                                         ShowGadget(win,wingads[BTID_Neu],GADGET_DOWN);
  427.                                                         Delay(5);
  428.                                                         ShowGadget(win,wingads[BTID_Neu],GADGET_UP  );
  429.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_Neu,messagecode,&gadgetdata,userdata);
  430.                                                         }
  431.                                                     break;
  432.                                                 case 'e':
  433.                                                     GT_GetGadgetAttrs(wingads[BTID_Aendern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  434.                                                     if (longpointer1 == 0)
  435.                                                         {
  436.                                                         ShowGadget(win,wingads[BTID_Aendern],GADGET_DOWN);
  437.                                                         Delay(5);
  438.                                                         ShowGadget(win,wingads[BTID_Aendern],GADGET_UP  );
  439.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_Aendern,messagecode,&gadgetdata,userdata);
  440.                                                         }
  441.                                                     break;
  442.                                                 case 'l':
  443.                                                     GT_GetGadgetAttrs(wingads[BTID_Loeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  444.                                                     if (longpointer1 == 0)
  445.                                                         {
  446.                                                         ShowGadget(win,wingads[BTID_Loeschen],GADGET_DOWN);
  447.                                                         Delay(5);
  448.                                                         ShowGadget(win,wingads[BTID_Loeschen],GADGET_UP  );
  449.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_Loeschen,messagecode,&gadgetdata,userdata);
  450.                                                         }
  451.                                                     break;
  452.                                                 case 'i':
  453.                                                     GT_GetGadgetAttrs(wingads[BTID_ListeLoeschen],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  454.                                                     if (longpointer1 == 0)
  455.                                                         {
  456.                                                         ShowGadget(win,wingads[BTID_ListeLoeschen],GADGET_DOWN);
  457.                                                         Delay(5);
  458.                                                         ShowGadget(win,wingads[BTID_ListeLoeschen],GADGET_UP  );
  459.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_ListeLoeschen,messagecode,&gadgetdata,userdata);
  460.                                                         }
  461.                                                     break;
  462.                                                 case 'd':
  463.                                                     GT_GetGadgetAttrs(wingads[BTID_Drucken],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  464.                                                     if (longpointer1 == 0)
  465.                                                         {
  466.                                                         ShowGadget(win,wingads[BTID_Drucken],GADGET_DOWN);
  467.                                                         Delay(5);
  468.                                                         ShowGadget(win,wingads[BTID_Drucken],GADGET_UP  );
  469.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_Drucken,messagecode,&gadgetdata,userdata);
  470.                                                         }
  471.                                                     break;
  472.                                                 case 's':
  473.                                                     GT_GetGadgetAttrs(wingads[BTID_Speichern],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  474.                                                     if (longpointer1 == 0)
  475.                                                         {
  476.                                                         ShowGadget(win,wingads[BTID_Speichern],GADGET_DOWN);
  477.                                                         Delay(5);
  478.                                                         ShowGadget(win,wingads[BTID_Speichern],GADGET_UP  );
  479.                                                         HandleGadgetsHauptfenster(win,wingads,BTID_Speichern,messagecode,&gadgetdata,userdata);
  480.                                                         }
  481.                                                     break;
  482.                                                 case 27:
  483.                                                     running=FALSE;
  484.                                                     break;
  485.                                                 }
  486.                                             break;
  487.                                         case IDCMP_CLOSEWINDOW:
  488.                                             running=FALSE;
  489.                                             break;
  490.                                         case IDCMP_GADGETUP:
  491.                                         case MXIDCMP:
  492.                                             HandleGadgetsHauptfenster(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  493.                                             break;
  494.                                         }
  495.                                     /* end-switch */
  496.                                     }
  497.                                 /* end-while */
  498.                                 }
  499.                             while (running);
  500.                             ClearMenuStrip(win);
  501.                             }
  502.                         else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  503.                         }
  504.                     else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  505.                     FreeMenus(menustrip);
  506.                     }
  507.                 else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  508.                 if (win) CloseWindow(win);
  509.                 }
  510.             else GUIC_ErrorReport(win,ERROR_NO_WINDOW_OPENED);
  511.             if (gadgetlist) FreeGadgets(gadgetlist);
  512.             }
  513.         else GUIC_ErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  514.         if (visualinfo) FreeVisualInfo(visualinfo);
  515.         }
  516.     else GUIC_ErrorReport(NULL,ERROR_NO_VISUALINFO);
  517. }
  518. ///
  519. /// HandleEintrag()
  520. void HandleEintrag(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  521. {
  522.     APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  523.     if (visualinfo)
  524.         {
  525.         struct Gadget  *gadgetlist = NULL;
  526.         struct Menu    *menustrip  = NULL;
  527.         ULONG height=13,width=53,maxheight=1024,maxwidth=1280;
  528.  
  529.         struct Gadget *wingads[11];
  530.  
  531.         char * title                  = "Eintrag";
  532.         struct Window     *win        = NULL;
  533.  
  534.         struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  535.  
  536.         struct NewGadget  newgad[]    = {
  537.                                                      XPOS(1),YPOS(1),XSIZE(10),YSIZE(2),"_Filmtitel:",&textattr,LAID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
  538.                                                      XPOS(1),YPOS(4),XSIZE(10),YSIZE(2)," _Kassette:",&textattr,LAID_Gadget10,PLACETEXT_IN,visualinfo,NULL,
  539.                                                      XPOS(1),YPOS(7),XSIZE(10),YSIZE(2),"  _Minuten:",&textattr,LAID_Gadget11,PLACETEXT_IN,visualinfo,NULL,
  540.                                                      XPOS(12),YPOS(1),XSIZE(40),YSIZE(2),NULL,&textattr,STID_Filmtitel,PLACETEXT_LEFT,visualinfo,NULL,
  541.                                                      XPOS(12),YPOS(4),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Kassette,PLACETEXT_LEFT,visualinfo,NULL,
  542.                                                      XPOS(12),YPOS(7),XSIZE(8),YSIZE(2),NULL,&textattr,INID_Minuten,PLACETEXT_LEFT,visualinfo,NULL,
  543.                                                      XPOS(30),YPOS(4),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Quelle,PLACETEXT_ABOVE,visualinfo,NULL,
  544.                                                      XPOS(30),YPOS(7),XSIZE(22),YSIZE(2),NULL,&textattr,CYID_Art,PLACETEXT_ABOVE,visualinfo,NULL,
  545.                                                      XPOS(22),YPOS(4),XSIZE(7),YSIZE(2),"_Quelle:",&textattr,LAID_Gadget17,PLACETEXT_IN,visualinfo,NULL,
  546.                                                      XPOS(22),YPOS(7),XSIZE(7),YSIZE(2),"   _Art:",&textattr,LAID_Gadget18,PLACETEXT_IN,visualinfo,NULL,
  547.                                                      XPOS(1),YPOS(10),XSIZE(51),YSIZE(2),"_Weiter",&textattr,BTID_Weiter,PLACETEXT_IN,visualinfo,NULL,
  548.                                                   };
  549.         char *            LA_Quelle[]  = { "Fernsehen","Videothek","selbst gedreht",NULL };
  550.         char *            LA_Art[]  = { "Science-Fiction","Karate","Western","Krimi","Action","Heimatfilm","Epos","Dokumentation","Zeichentrick","Abenteuer","Theater","Werbung","Horror","TV-Movie","Komödie","Liebesfilm","Sonstiges",NULL };
  551.  
  552.  
  553.         struct EintragData gadgetdata = {
  554.                                                      /* belongs to a string gadget */
  555.                                                      FALSE,
  556.                                                      "",
  557.                                                      /* belongs to an integer gadget */
  558.                                                      FALSE,
  559.                                                      0,
  560.                                                      /* belongs to an integer gadget */
  561.                                                      FALSE,
  562.                                                      0,
  563.                                                      /* belongs to a cycle gadget */
  564.                                                      FALSE,
  565.                                                      0,
  566.                                                      (char * *)&LA_Quelle[0],
  567.                                                      /* belongs to a cycle gadget */
  568.                                                      FALSE,
  569.                                                      0,
  570.                                                      (char * *)&LA_Art[0],
  571.                                                      /* belongs to a button */
  572.                                                      FALSE,
  573.                                                   };
  574.  
  575.  
  576.         struct NewMenu    menu[]      = {
  577.                                                      NM_TITLE, "Program",0,0,0,0,
  578.                                                      NM_ITEM ,"About","A",0,0,0,
  579.                                                     };
  580.         height= YSIZE(height);
  581.         width = XSIZE(width) ;
  582.         if (left == -1) left  = (customscreen->Width-width)/2;
  583.         if (top  == -1) top   = (customscreen->Height-height)/2;
  584.  
  585.         if (CreateGadgetsEintrag(&gadgetlist,newgad,wingads,&gadgetdata) != NULL)
  586.             {
  587.             if (height>customscreen->Height || width>customscreen->Width) GUIC_ErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  588.             win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  589.                                             WA_CloseGadget,      TRUE,
  590.                                             WA_DepthGadget,      TRUE,
  591.                                             WA_SizeGadget,       TRUE,
  592.                                             WA_DragBar,          TRUE,
  593.                                             WA_Gadgets,          gadgetlist,
  594.                                             WA_InnerHeight,      height,
  595.                                             WA_InnerWidth,       width,
  596.                                             WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_MENUPICK|BUTTONIDCMP|STRINGIDCMP|INTEGERIDCMP|CYCLEIDCMP,
  597.                                             WA_Left,             left,
  598.                                             WA_Top,              top,
  599.                                             WA_MaxHeight,        maxheight,
  600.                                             WA_MinHeight,        height,
  601.                                             WA_MaxWidth,         maxwidth,
  602.                                             WA_MinWidth,         width,
  603.                                             WA_SizeBRight,       FALSE,
  604.                                             WA_SizeBBottom,      TRUE,
  605.                                             WA_SmartRefresh,     TRUE,
  606.                                             WA_CustomScreen,     customscreen,
  607.                                             WA_Title,            title,
  608.                                             WA_NewLookMenus,     TRUE,
  609.                                             TAG_END);
  610.             if (win)
  611.                 {
  612.                 menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  613.                 if (menustrip)
  614.                     {
  615.                     if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  616.                         {
  617.                         if (SetMenuStrip(win,menustrip))
  618.                             {
  619.                             struct IntuiMessage  *imessage   = NULL;
  620.                             struct Gadget        *idcmpgad   = NULL;
  621.                             struct NewGadget     ngcopy[]    = newgad;
  622.                             long   double        xscale      = 1.0;
  623.                             long   double        yscale      = 1.0;
  624.                             char * stringpointer             = NULL;
  625.                             ULONG                i           = 0;
  626.                             ULONG                gadgetcount = 11;
  627.                             ULONG  idcmpclass                = 0;
  628.                             UWORD  messagecode               = 0;
  629.                             BOOL   running                   = TRUE;
  630.                             ULONG  signal                    = 0;
  631.                             ULONG  longpointer1              = 0;
  632.                             ULONG  longpointer2              = 0;
  633.  
  634.                             SetFont(win->RPort,GfxBase->DefaultFont);
  635.  
  636.                             GT_RefreshWindow(win,NULL);
  637.  
  638.                             /* User-Setup */
  639.                             UserSetupEintrag(win,wingads,userdata);
  640.                             do
  641.                                 {
  642.                                 WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  643.                                 if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  644.                                 if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  645.                                 WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  646.                                 while (running && (imessage=GT_GetIMsg(win->UserPort)))
  647.                                     {
  648.                                     idcmpgad=(struct Gadget *)imessage->IAddress;
  649.                                     idcmpclass=imessage->Class;
  650.                                     messagecode =imessage->Code;
  651.  
  652.                                     GT_ReplyIMsg(imessage);
  653.  
  654.                                     switch(idcmpclass)
  655.                                         {
  656.                                         case IDCMP_REFRESHWINDOW:
  657.                                             GT_BeginRefresh(win);
  658.                                             GT_EndRefresh(win,TRUE);
  659.                                             break;
  660.                                         case IDCMP_MENUPICK:
  661.                                             switch(MENUNUM(messagecode))
  662.                                                 {
  663.                                                 case 0:
  664.                                                     switch (ITEMNUM(messagecode))
  665.                                                         {
  666.                                                         case 0:
  667.                                                             About(win,wingads,userdata);
  668.                                                             break;
  669.                                                         }
  670.                                                     break;
  671.                                                 }
  672.                                             break;
  673.                                         case IDCMP_NEWSIZE:
  674.                                             GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,GTST_String,&stringpointer,TAG_END);
  675.                                             gadgetdata.gd_Disabled_Filmtitel=(longpointer1 == 0)?FALSE:TRUE;
  676.                                             strcpy(gadgetdata.gd_String_Filmtitel,stringpointer);
  677.                                             GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
  678.                                             gadgetdata.gd_Disabled_Kassette=(longpointer1 == 0)?FALSE:TRUE;
  679.                                             gadgetdata.gd_Number_Kassette=longpointer2;
  680.                                             GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,GTIN_Number,&longpointer2,TAG_END);
  681.                                             gadgetdata.gd_Disabled_Minuten=(longpointer1 == 0)?FALSE:TRUE;
  682.                                             gadgetdata.gd_Number_Minuten=longpointer2;
  683.                                             GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  684.                                             gadgetdata.gd_Disabled_Quelle=(longpointer1 == 0)?FALSE:TRUE;
  685.                                             gadgetdata.gd_Active_Quelle=longpointer2;
  686.                                             GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  687.                                             gadgetdata.gd_Labels_Quelle=(char * *)longpointer1;
  688.                                             GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,GTCY_Active,&longpointer2,TAG_END);
  689.                                             gadgetdata.gd_Disabled_Art=(longpointer1 == 0)?FALSE:TRUE;
  690.                                             gadgetdata.gd_Active_Art=longpointer2;
  691.                                             GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Labels,&longpointer1,TAG_END);
  692.                                             gadgetdata.gd_Labels_Art=(char * *)longpointer1;
  693.                                             GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  694.                                             gadgetdata.gd_Disabled_Weiter=(longpointer1 == 0)?FALSE:TRUE;
  695.  
  696.                                             RemoveGList(win,gadgetlist,-1);
  697.                                             SetAPen(win->RPort,0L);
  698.                                             RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  699.                                             RefreshWindowFrame(win);
  700.  
  701.                                             xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  702.                                             yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  703.                                             for (i=0;i<gadgetcount;i++)
  704.                                                 {
  705.                                                 ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  706.                                                 ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  707.                                                 ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  708.                                                 ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  709.                                                 }
  710.  
  711.                                             FreeGadgets(gadgetlist);
  712.                                             gadgetlist=NULL;
  713.  
  714.                                             CreateGadgetsEintrag(&gadgetlist,ngcopy,wingads,&gadgetdata);
  715.                                             AddGList(win,gadgetlist,-1,-1,NULL);
  716.                                             RefreshGList(gadgetlist,win,NULL,-1);
  717.                                             GT_RefreshWindow(win,NULL);
  718.  
  719.                                             break;
  720.                                         case IDCMP_VANILLAKEY:
  721.                                             switch(messagecode)
  722.                                                 {
  723.                                                 case 'f':
  724.                                                     GT_GetGadgetAttrs(wingads[STID_Filmtitel],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  725.                                                     if (longpointer1 == 0) ActivateGadget(wingads[STID_Filmtitel],win,NULL);
  726.                                                     break;
  727.                                                 case 'k':
  728.                                                     GT_GetGadgetAttrs(wingads[INID_Kassette],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  729.                                                     if (longpointer1 == 0) ActivateGadget(wingads[INID_Kassette],win,NULL);
  730.                                                     break;
  731.                                                 case 'm':
  732.                                                     GT_GetGadgetAttrs(wingads[INID_Minuten],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  733.                                                     if (longpointer1 == 0) ActivateGadget(wingads[INID_Minuten],win,NULL);
  734.                                                     break;
  735.                                                 case 'q':
  736.                                                     GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  737.                                                     if (longpointer1 == 0)
  738.                                                         {
  739.                                                         ShowGadget(win,wingads[CYID_Quelle],GADGET_DOWN);
  740.                                                         Delay(5);
  741.                                                         ShowGadget(win,wingads[CYID_Quelle],GADGET_UP  );
  742.                                                         GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  743.                                                         if (++longpointer1 == 3) longpointer1=0;
  744.                                                         GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
  745.                                                         HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
  746.                                                         }
  747.                                                     break;
  748.                                                 case 'Q':
  749.                                                     GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  750.                                                     if (longpointer1 == 0)
  751.                                                         {
  752.                                                         ShowGadget(win,wingads[CYID_Quelle],GADGET_DOWN);
  753.                                                         Delay(5);
  754.                                                         ShowGadget(win,wingads[CYID_Quelle],GADGET_UP  );
  755.                                                         GT_GetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  756.                                                         if (longpointer1 == 0) longpointer1=3;
  757.                                                     longpointer1--;
  758.                                                         GT_SetGadgetAttrs(wingads[CYID_Quelle],win,NULL,GTCY_Active,longpointer1,TAG_END);
  759.                                                         HandleGadgetsEintrag(win,wingads,CYID_Quelle,longpointer1,&gadgetdata,userdata);
  760.                                                         }
  761.                                                     break;
  762.                                                 case 'a':
  763.                                                     GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  764.                                                     if (longpointer1 == 0)
  765.                                                         {
  766.                                                         ShowGadget(win,wingads[CYID_Art],GADGET_DOWN);
  767.                                                         Delay(5);
  768.                                                         ShowGadget(win,wingads[CYID_Art],GADGET_UP  );
  769.                                                         GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  770.                                                         if (++longpointer1 == 17) longpointer1=0;
  771.                                                         GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
  772.                                                         HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
  773.                                                         }
  774.                                                     break;
  775.                                                 case 'A':
  776.                                                     GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  777.                                                     if (longpointer1 == 0)
  778.                                                         {
  779.                                                         ShowGadget(win,wingads[CYID_Art],GADGET_DOWN);
  780.                                                         Delay(5);
  781.                                                         ShowGadget(win,wingads[CYID_Art],GADGET_UP  );
  782.                                                         GT_GetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,&longpointer1,TAG_END);
  783.                                                         if (longpointer1 == 0) longpointer1=17;
  784.                                                     longpointer1--;
  785.                                                         GT_SetGadgetAttrs(wingads[CYID_Art],win,NULL,GTCY_Active,longpointer1,TAG_END);
  786.                                                         HandleGadgetsEintrag(win,wingads,CYID_Art,longpointer1,&gadgetdata,userdata);
  787.                                                         }
  788.                                                     break;
  789.                                                 case 'w':
  790.                                                     GT_GetGadgetAttrs(wingads[BTID_Weiter],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  791.                                                     if (longpointer1 == 0)
  792.                                                         {
  793.                                                         ShowGadget(win,wingads[BTID_Weiter],GADGET_DOWN);
  794.                                                         Delay(5);
  795.                                                         ShowGadget(win,wingads[BTID_Weiter],GADGET_UP  );
  796.                                                         HandleGadgetsEintrag(win,wingads,BTID_Weiter,messagecode,&gadgetdata,userdata);
  797.                                                         }
  798.                                                     break;
  799.                                                 case 27:
  800.                                                     running=!EintragCloseWindow(win,wingads,userdata);
  801.                                                     break;
  802.                                                 }
  803.                                             break;
  804.                                         case IDCMP_CLOSEWINDOW:
  805.                                             running=!EintragCloseWindow(win,wingads,userdata);
  806.                                             break;
  807.                                         case IDCMP_GADGETUP:
  808.                                         case MXIDCMP:
  809.                                             HandleGadgetsEintrag(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  810.                                             break;
  811.                                         }
  812.                                     /* end-switch */
  813.                                     }
  814.                                 /* end-while */
  815.                                 }
  816.                             while (running);
  817.                             ClearMenuStrip(win);
  818.                             }
  819.                         else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  820.                         }
  821.                     else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  822.                     FreeMenus(menustrip);
  823.                     }
  824.                 else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  825.                 if (win) CloseWindow(win);
  826.                 }
  827.             else GUIC_ErrorReport(win,ERROR_NO_WINDOW_OPENED);
  828.             if (gadgetlist) FreeGadgets(gadgetlist);
  829.             }
  830.         else GUIC_ErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  831.         if (visualinfo) FreeVisualInfo(visualinfo);
  832.         }
  833.     else GUIC_ErrorReport(NULL,ERROR_NO_VISUALINFO);
  834. }
  835. ///
  836.  
  837.